package services.impl;

import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import services.FacadeVistaWeb;
import services.PorcentajeGananciaService;
import services.ProveedorService;
import services.RodamientoService;
import services.VentaService;
import entities.PorcentajeGanancia;
import entities.VO.ProveedorVO;
import entities.VO.RodamientoStockVO;
import finals.Finals;

public @Stateless class FacadeVistaWebBean implements FacadeVistaWeb {

	private Logger logger = Logger.getLogger(Finals.LOGPATH);
	
	@EJB private ProveedorService proveedorService;
	
	@EJB private PorcentajeGananciaService porcentajeGananciaService;
	
	@EJB private RodamientoService rodamientoService;
	
	@EJB private VentaService ventaService;
	
	public void bajaProveedor(Object id){
		try{
			proveedorService.delete(id);	
		}catch(Exception e){
			logger.log(Level.SEVERE, e.getMessage());
		}
	}
	
	public void altaProveedor(ProveedorVO proveedorVO){
		proveedorService.altaProveedor(proveedorVO);
	}
	
	public List<ProveedorVO> obtenerProveedores(){
		return proveedorService.findAllVO();
	}
	
	public ProveedorVO obtenerProveedor(Object id){
		return proveedorService.findByIDVO(id);
	}
	
	public void actualizarProveedor(ProveedorVO proveedorVO){
		proveedorService.actualizar(proveedorVO);
	}

	@Override
	public Double obtenerPorcentajeGanancia() {
		PorcentajeGanancia porcentajeGanancia= porcentajeGananciaService.findByID(1);
		if (porcentajeGanancia != null){
			return porcentajeGanancia.getPorcentajeGanancia();
		}
		return null;
	}

	@Override
	public void determinarPorcentajeGanancia(Double porcentajeGanancia) {
		porcentajeGananciaService.determinarPorcentajeDeGanancia(porcentajeGanancia);
		
	}

	@Override
	public void altaRodamiento(RodamientoStockVO rodamientoStockVO) {
		rodamientoService.altaRodamiento(rodamientoStockVO);
	}

	@Override
	public void actualizarRodamiento(RodamientoStockVO rodamientoStockVO) {
		rodamientoService.actualizarRodamiento(rodamientoStockVO);
		
	}

	@Override
	public RodamientoStockVO obtenerRodamientoStock(Integer idRodamiento) {
		return rodamientoService.findVOByID(idRodamiento);
	}

	@Override
	public List<RodamientoStockVO> obtenerRodamientos() {
		return rodamientoService.findAllVO();
	}

	@Override
	public void bajaRodamiento(Object id) {
		try{
			rodamientoService.delete(id);	
		}catch(Exception e){
			logger.log(Level.SEVERE, e.getMessage());
		}
	}
	
	public int generarYEnviarRemitosAPartirDeStockNuevo(){
		int cantRemitosEnviados = ventaService.generarYEnviarRemitosAPartirDeStockNuevo();
		return cantRemitosEnviados;
	}
}
